package Serveur;

import Client.I_ChatClient;
import java.io.File;
import java.rmi.Remote;
import java.rmi.RemoteException;
import java.util.LinkedList;


public interface I_serveur extends Remote {
        
        /** Connexion d'un client dans le chat
      * @param client : le client a connecté
      * @throws RemoteException 
      */
        public void connecter(I_ChatClient client) throws RemoteException;

        /** Déconnexion d'un client du chat
      * @param nomClient : le client a deconnecté
      * @throws RemoteException 
      */
        public void deconnecter(String nomClient) throws RemoteException; 

        /** Recherche le nom d'un client parmi les clients connecté
      * @param nom : le nom du client a rechercher
      * @return l'indice du client dans la liste chainée des clients connectés, -1 si le client n'est pas dans la liste
      * @throws RemoteException 
      */
        public int chercherNom(String nom) throws RemoteException;

        /** Vérifie que le nom d'utilisateur et que le mot de passe associé sont correctes dans le fichier des logs
      * @param nom : le nom d'utilisateur d'un client
      * @param motdPasse : le mot de passe associé à un nom d'utilisateur
      * @return Vrai si le nom d'utilisateur et le mot de passe correspondant existe, faux si le nom d'utilisateur n'existe pas ou que le mot de passe ne coreespond pas au nom d'utilisateur
      * @throws RemoteException 
      */        
        public boolean verifLogin(String nom, String motdPasse)throws RemoteException;
        
        /** Vérifie qu'un nom d'utilisateur d'un client existe dans le fichier des logs
      * @param nom : le nom d'utilisateur d'un client
      * @return Vrai si le nom d'utilisateur existe dans le fichier des logs, faux si le nom d'utilisateur n'existe pas
      * @throws RemoteException 
      */
        public boolean verifUsername(String nom) throws RemoteException;
        
       /** Ajout d'un nom d'utilisateur et d'un mot de passe dans le fichier des logs
      * @param nom : le nom d'utilisateur d'un client
      * @param motdPasse : le mot de passe associé à un nom d'utilisateur
      * @throws RemoteException 
      */
        public void ajouterLog(String nomU,String mdp) throws RemoteException;
        
        /** Vérifie qu'un client n'est pas déjà cnnecté
      * @param nom : le nom d'utilisateur d'un client
      * @return vrai si le client n'est pas déjà connecté, faux si le client n'est pas connecté
      * @throws RemoteException 
      */
        public boolean utilisateurPasDejaPresent(String nom) throws RemoteException;

       /** Verifie que la taille du fichier envoyée est correcte
        * @param fichier : le fichier en cours d'envoi
        * @return : vrai ssi la taille du fichier est correcte par rapport au serveur
        * @throws RemoteException 
        */
       public boolean tailleFichierValide(File fichier) throws RemoteException;
       
       /**Créer un fichier de login
        * @throws RemoteException 
        */
       public void creerFichLog() throws RemoteException;
       
}
